import request from '@/utils/request'

/**
 * 获取部门列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getDeptList(params) {
  return request({
    url: '/system/dept/list',
    method: 'get',
    params
  })
}

/**
 * 获取部门树结构
 * @returns {Promise}
 */
export function getDeptTree() {
  return request({
    url: '/system/dept/tree',
    method: 'get'
  })
}

/**
 * 获取部门详情
 * @param {number} id 部门ID
 * @returns {Promise}
 */
export function getDeptDetail(id) {
  return request({
    url: `/system/dept/${id}`,
    method: 'get'
  })
}

/**
 * 创建部门
 * @param {Object} data 部门数据
 * @returns {Promise}
 */
export function createDept(data) {
  return request({
    url: '/system/dept',
    method: 'post',
    data
  })
}

/**
 * 更新部门
 * @param {number} id 部门ID
 * @param {Object} data 部门数据
 * @returns {Promise}
 */
export function updateDept(id, data) {
  return request({
    url: `/system/dept/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除部门
 * @param {number} id 部门ID
 * @returns {Promise}
 */
export function deleteDept(id) {
  return request({
    url: `/system/dept/${id}`,
    method: 'delete'
  })
}

/**
 * 更新部门状态
 * @param {number} id 部门ID
 * @param {number} status 状态值(1:正常;0:停用)
 * @returns {Promise}
 */
export function updateDeptStatus(id, status) {
  return request({
    url: `/system/dept/${id}/status`,
    method: 'patch',
    data: { status }
  })
}

/**
 * 获取部门选择数据
 * @returns {Promise}
 */
export function getDeptSelectData() {
  return request({
    url: '/system/dept/select',
    method: 'get'
  })
}

/**
 * 获取所有部门
 * @returns {Promise}
 */
export function getAllDepts() {
  return request({
    url: '/system/dept/all',
    method: 'get'
  })
}

/**
 * 获取部门下属用户
 * @param {number} id 部门ID
 * @returns {Promise}
 */
export function getDeptUsers(id) {
  return request({
    url: `/system/dept/${id}/user`,
    method: 'get'
  })
}

/**
 * 获取部门选择器数据
 * @returns {Promise} 返回部门树数据
 */
export function getDeptSelectTree() {
  return request({
    url: '/api/dept/select/tree',
    method: 'get'
  })
} 